package classpath

import "os"
import "path/filepath"
import "strings"

/*
WildcardEntry也是一个组合类型的Entry，
所以返回CompositeEntry，不用再定义新的类型

需要考虑提供的参数路径下的所有class文件，jar文件，子目录等
在此类的实现下，只实现对路径下的jar文件处理，不考虑子目录以及class文件的处理
不会递归处理目录
*/
func newWildcardEntry(path string) CompositeEntry {
	baseDir := path[:len(path)-1] //剔除掉*号
	compositeEntry := []Entry{}
	walkFn := func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		if info.IsDir() && path != baseDir {
			return filepath.SkipDir
		}
		if strings.HasSuffix(path, ".jar") || strings.HasSuffix(path, ".JAR") {
			jarEntry := newZipEntry(path)
			compositeEntry = append(compositeEntry, jarEntry)
		}
		return nil
	}

	filepath.Walk(baseDir, walkFn)
	return compositeEntry

}
